package com.builder;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import com.model.OrdenDeCompra;
import com.view.OrdenDeCompraView;

@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class OrdenDeCompraBuilder extends
		BaseBuilder<OrdenDeCompraView, OrdenDeCompra> {

	@ManagedProperty("#{ordenDeCompraDetalleBuilder}")
	private OrdenDeCompraDetalleBuilder ordenDeCompraDetalleBuilder;

	@ManagedProperty("#{proveedorBuilder}")
	private ProveedorBuilder proveedorBuilder;

	@ManagedProperty("#{depositoBuilder}")
	private DepositoBuilder depositoBuilder;

	@ManagedProperty("#{remitoBuilder}")
	private RemitoBuilder remitoBuilder;

	@ManagedProperty("#{clienteBuilder}")
	private ClienteBuilder clienteBuilder;

	@Override
	public OrdenDeCompra toDomain(OrdenDeCompraView view) {

		return new OrdenDeCompra(view.getId(), view.getNumeroOrdenDeCompra(),
				proveedorBuilder.toDomain(view.getProveedorView()),
				ordenDeCompraDetalleBuilder.toDomain(view
						.getListaDetalleOrdenDeCompraView()),
				view.getFechaOrdenDeCompra(), view.getEstado(),
				view.getFechaCreadaOrdenDeCompra(),
				view.getFechaAutorizadaOrdenDeCompra(),
				view.getFechaCierreOrdenDeCompra(), remitoBuilder.toDomain(view
						.getListaDeRemitos()), clienteBuilder.toDomain(view
						.getClienteView()), view.getTotal(),
				view.getTotalRecepcionado());
	}

	@Override
	public OrdenDeCompraView toView(OrdenDeCompra model) {

		return new OrdenDeCompraView(model.getID(),
				model.getNumeroOrdenDeCompra(), proveedorBuilder.toView(model
						.getProveedor()),
				ordenDeCompraDetalleBuilder.toView(model
						.getListaDetalleOrdenDeCompra()),
				model.getFechaOrdenDeCompra(), model.getEstado(),
				model.getFechaCreadaOrdenDeCompra(),
				model.getFechaAutorizadaOrdenDeCompra(),
				model.getFechaCierreOrdenDeCompra(), remitoBuilder.toView(model
						.getListaDeRemitos()), clienteBuilder.toView(model
						.getCliente()), model.getTotal(),
				model.getTotalRecepcionado());
	}

	public OrdenDeCompraDetalleBuilder getOrdenDeCompraDetalleBuilder() {
		return ordenDeCompraDetalleBuilder;
	}

	public void setOrdenDeCompraDetalleBuilder(
			OrdenDeCompraDetalleBuilder ordenDeCompraDetalleBuilder) {
		this.ordenDeCompraDetalleBuilder = ordenDeCompraDetalleBuilder;
	}

	public ProveedorBuilder getProveedorBuilder() {
		return proveedorBuilder;
	}

	public void setProveedorBuilder(ProveedorBuilder proveedorBuilder) {
		this.proveedorBuilder = proveedorBuilder;
	}

	public RemitoBuilder getRemitoBuilder() {
		return remitoBuilder;
	}

	public void setRemitoBuilder(RemitoBuilder remitoBuilder) {
		this.remitoBuilder = remitoBuilder;
	}

	public ClienteBuilder getClienteBuilder() {
		return clienteBuilder;
	}

	public void setClienteBuilder(ClienteBuilder clienteBuilder) {
		this.clienteBuilder = clienteBuilder;
	}

	public DepositoBuilder getDepositoBuilder() {
		return depositoBuilder;
	}

	public void setDepositoBuilder(DepositoBuilder depositoBuilder) {
		this.depositoBuilder = depositoBuilder;
	}

}
